今天,我們要來簡單說明一下,在於 MedusaJS 中 Payment Module 中粗略的付款流程是怎什麼。
當使用者對於滿足購物後,會前往結帳,前往結帳的第一個動作,會建立一個 Payment Collection(收款作業)
Payment Collection(付款),他會將購物車或者訂單來的付款細節資料進行儲存,
還包括 以下列項:
Payment Session(付款工作階段) 傳來的授權成功或者失敗的回應。Payment(支付記錄) 的狀態。Payment Provider(第三方金流) 對於 Payment Session(付款工作階段) 發送要求時的處理狀態。還有 MedusaJS 的 Payment Collection 是支援分割付款的,假如你買 1000 個商品,
你可以分 600、400 以不同第三方金流去處理。
建立好 Payment Collection(付款)後,接下來就是根據使用者付款的方式,建立一個 Payment Session(付款工作階段) 。
Payment Session(付款工作階段)就是開始對第三方金流進行對話,我們先來說說關於此 Payment Session(付款工作階段)會有的資料屬性。
id,方便跟蹤。注意:這個 Payment Session(付款工作階段) 的 data(資料) 前端也是可以存取。所以只要將可公開的部分讓前端存取就好,例如 進入與 第三方金流上次溝通紀錄點的鑰匙(token)。
Payment Session(付款工作階段) 也會儲存 與第三方金流的交流status(狀態),有以下狀態:
pending(等待授權)
require_more(需要更多資訊)
authorized(授權)
error(付款時發生錯誤)
cancel(已取消)
當 Payment Session(付款工作階段) 的狀態是 authorized,會建立一個  Payment data model,這筆付款可以被 capture(確認)或者refund(退款)。
以下介紹一下 Payment 與 Payment session(付款工作階段) 等等的關聯性
Payment 建立是與 Payment session(付款工作階段) 關聯的,所以 他們屬於同一個 Payment Collection(付款)。Payment 也會與 Payment Session(付款工作階段) 溝通的 Payment Provider(第三方支付) 有關聯。Payment 也會多儲存 Payment Session(付款工作階段) 的 資料屬性。再來說明一下 capture(確認) 以及 refund(退款) 是什麼
當訂單 出貨 或 到貨 時,可以點選 capture(確認)表示請款(補份或全部)。
當訂單被 取消 或 退貨 時 ,可以點選 refund(退款) 表示 退款(部分或全部)。
在 MedusaJS 中,只有一家金流插件可以馬上下載並且使用,就是 stripe。
其他的都要自己寫程式串接。所以這次介紹了流程,也是方便各位如果要自己實作金流串接前,想了解一下支付過程。
明天玩玩看系統的付款流程 ლ(・´ェ`・ლ)